import dayjs from "dayjs";

export function back() {
	if (getCurrentPages().length > 1) {
		uni.navigateBack({
			delta: 1,
			animationType: 'slide-out-left',
		})
	} else {
		uni.navigateTo({
			url: '/pages/room/index',
		})
	}
}

export function jumpTo(path) {
	// uni.navigateTo
	//关闭所有页面，打开到应用内的某个页面
	uni.reLaunch({
		url: path
	})
}

export function navigateTo(path) {
	//保留当前页面，跳转到应用内的某个页面，使用uni.navigateBack可以返回到原页面。
	uni.navigateTo({
		url: path,
	})
}

export function isEmptyArray(arr) {
	return arr.length === 0
}

// 日期格式化
export function dateFormatter(date) {
	const t = dayjs(date);

	// 在今天之前
	if (t.isBefore(dayjs().hour(0).minute(0).second(0))) {
		return t.format("YYYY-MM-DD HH:mm");
	} else {
		return t.format("HH:mm");
	}
}

// uuid
export function uuid() {
	const s = [];
	const hexDigits = "0123456789abcdef";
	for (let i = 0; i < 36; i++) {
		s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
	}
	s[14] = "4";
	s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);
	s[8] = s[13] = s[18] = s[23] = "-";

	return s.join("");
}

/**
 * 对比微信小程序基础库版本
 * 
 * @param version 需要对比的版本
 * @returns >= 0 表示当前版本大于等于对比版本，< 0 表示当前版本小于对比版本
 */
export function compareVersion(version) {
    let v1 = [];

    // 获取微信小程序基础库版本
    try {
        v1 = uni.getAppBaseInfo().SDKVersion.split('.') // > 2.20.1
    } catch (e) {
        v1 = uni.getSystemInfoSync().SDKVersion.split('.') // > 1.9.6
    }

    const v2 = version.split('.')
    const len = Math.max(v1.length, v2.length)

    while (v1.length < len) {
        v1.push('0')
    }
    while (v2.length < len) {
        v2.push('0')
    }

    for (let i = 0; i < len; i++) {
        const num1 = parseInt(v1[i])
        const num2 = parseInt(v2[i])

        if (num1 > num2) {
            return 1
        } else if (num1 < num2) {
            return -1
        }
    }

    return 0
}


/**
 * 获取导航栏信息
 */
export function getNavigationBarInfo() {
    const statusBarHeight = getStatusBarHeight()

    const menuButtonInfo = uni.getMenuButtonBoundingClientRect()

    return {
        statusBarHeight,
        navigationHeight: (menuButtonInfo.top - statusBarHeight) * 2 + menuButtonInfo.height 
    }
}


function getStatusBarHeight() {
    // #ifndef MP-WEIXIN
    return uni.getWindowInfo().statusBarHeight || 1;
    // #endif

    // #ifdef MP-WEIXIN
    if (compareVersion('2.20.1') >= 0) {            // 2.20.1 以上版本支持
        return uni.getWindowInfo().statusBarHeight;
    } else {
        return uni.getSystemInfoSync().statusBarHeight || 0;
    }
    // #endif
}

export function getSex(sex) {
	switch (+sex) {
		case 0:
		default:
			return "";
		case 1:
			return "先生";
		case 2:
			return "女士";
	}
}
